/**
 *  The Yz.Translit class
 */
(function(Yz) {
    if ( typeof(Yz) != "function" ) {
        throw "Failed to identify the root Yz object";
    }

    // prevent multiple execution
    if ('Translit' in Yz) {
        return;
    }

    Yz.Translit = function(string)
    {
        return string.replace(
            /(ъе|ъё|ъю|ъя|ье|ьё|ьо|ью|ья|[абвгдеёжзийклмнопрстуфхцчшщъыьэюя])/gi,
            Yz.Translit.tr
        );
    };


    /****************************
     *      Implementation      *
     ****************************/

    Yz.Translit.transTable = {
        'а': 'a',
        'б': 'b',
        'в': 'v',
        'г': 'g',
        'д': 'd',
        'е': 'e',
        'ё': 'jo',
        'ж': 'zh',
        'з': 'z',
        'и': 'i',
        'й': 'j',
        'к': 'k',
        'л': 'l',
        'м': 'm',
        'н': 'n',
        'о': 'o',
        'п': 'p',
        'р': 'r',
        'с': 's',
        'т': 't',
        'у': 'u',
        'ф': 'f',
        'х': 'h',
        'ц': 'c',
        'ч': '4',
        'ш': 'sh',
        'щ': 'sch',
        'ъ': '',
        'ъе': 'je',
        'ъё': 'jo',
        'ъю': 'ju',
        'ъя': 'ja',
        'ы': 'y',
        'ь': '',
        'ье': 'je',
        'ьё': 'jo',
        'ьо': 'jo',
        'ью': 'ju',
        'ья': 'ja',
        'э': 'e',
        'ю': 'ju',
        'я': 'ja'
    };

    Yz.Translit.tr = function(match)
    {
        var tr = Yz.Translit.transTable;
        var m = tr[match];
        if (typeof m == 'undefined') {
            m = tr[match.toLowerCase()].toUpperCase();
        }
        return m;
    }

    Yz.Translit.doTranslit = function(string)
    {
    }

})(window.Yz);
